package fr.uniscol.model.utilisateur;

import java.util.ArrayList;
import java.util.Collection;
import java.util.HashSet;
import java.util.Iterator;
import java.util.List;
import java.util.Set;

import org.hibernate.collection.PersistentSet;
import org.hibernate.mapping.Array;

import fr.uniscol.model.DonneeUniscol;
import fr.uniscol.model.Etablissement;
import fr.uniscol.model.ServiceEnseignant;

public class User implements DonneeUniscol {
	
	private Etablissement etablissement = null;
	
	private String login = null;
	private String password = null;
	private String nom = null;
	private String prenom = null;
	
	/** Les profils de l'utilisateur */
	private Collection<ProfilUtilisateur> profils = null;
	
	private boolean authentifie = false;
	
	private List<ServiceEnseignant> services = null;
	
	public User(){
	}

	public Etablissement getEtablissement() {
		return etablissement;
	}

	public void setEtablissement(Etablissement etablissement) {
		this.etablissement = etablissement;
	}

	public String getLogin() {
		return login;
	}

	public void setLogin(String login) {
		this.login = login;
	}

	public String getPassword() {
		if(password == null){
			password = "";
		}
		return password;
	}

	public void setPassword(String password) {
		this.password = password;
	}

	public String getNom() {
		if(nom == null){
			nom = "";
		}
		return nom;
	}

	public void setNom(String nom) {
		this.nom = nom;
	}

	public String getPrenom() {
		if(prenom == null){
			prenom = "";
		}
		return prenom;
	}

	public void setPrenom(String prenom) {
		this.prenom = prenom;
	}

	public boolean isAuthentifie() {
		return authentifie;
	}

	public void setAuthentifie(boolean authentifie) {
		this.authentifie = authentifie;
	}

	public Collection<ProfilUtilisateur> getProfils() {
		if(profils == null){
			profils = new HashSet<ProfilUtilisateur>();
		}
		return profils;
	}
	
	public Collection<ProfilUtilisateur> getListeProfils(){
		Collection<ProfilUtilisateur> liste = new ArrayList<ProfilUtilisateur>();
		
		Iterator<ProfilUtilisateur> itp = getProfils().iterator();
		ProfilUtilisateur p = null;
		while(itp.hasNext()){
			liste.add(itp.next());
		}
		
		return liste;
	}

	public void setProfils(Collection<ProfilUtilisateur> profils) {
		this.profils = profils;
	}
	
	public boolean hasProfil(ProfilUtilisateur profil){
		return getProfils().contains(profil);
	}

	public List<ServiceEnseignant> getServices() {
		if(services == null){
			services = new ArrayList<ServiceEnseignant>();
		}
		return services;
	}

	public void setServices(List<ServiceEnseignant> services) {
		this.services = services;
	}
}

